package co.edu.uniandes.distribuidos.exclusion.downloadContainer;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import co.edu.uniandes.distribuidos.fss.adv.FileAdvertisement;
import co.edu.uniandes.distribuidos.fss.adv.FileID;


public class DownloadFile {
	
	private FileAdvertisement fileAdvertisement;
	private List<FileID> listaDescarga = new ArrayList<FileID>();
	private List<FileID> listaAvisar = new ArrayList<FileID>();
	private boolean permiso;
	private boolean solicitandoPermisoActulizacion;
	private List contador= new ArrayList();
	
	
	public synchronized List<FileID> getListaDescarga() {
		return listaDescarga;
	}
	public synchronized  void setListaDescarga(List<FileID> listaDescarga) {
		this.listaDescarga = listaDescarga;
	}
	public synchronized List<FileID> getListaAvisar() {
		return listaAvisar;
	}
	public synchronized void setListaAvisar(List<FileID> listaAvisar) {
		this.listaAvisar = listaAvisar;
	}
	public synchronized boolean isPermiso() {
		return permiso;
	}
	public synchronized void setPermiso(boolean permiso) {
		this.permiso = permiso;
	}

	public synchronized FileAdvertisement getFileAdvertisement() {
		return fileAdvertisement;
	}

	public synchronized void setFileAdvertisement(FileAdvertisement fileAdvertisement) {
		this.fileAdvertisement = fileAdvertisement;
	}
	
	public synchronized boolean isSolicitandoPermisoActulizacion() {
		return solicitandoPermisoActulizacion;
	}
	public synchronized void setSolicitandoPermisoActulizacion(
			boolean solicitandoPermisoActulizacion) {
		this.solicitandoPermisoActulizacion = solicitandoPermisoActulizacion;
	}
	public synchronized List getContador() {
		return contador;
	}
	public synchronized void setContador(List contador) {
		this.contador = contador;
	}
	public synchronized boolean addContador(Object arg0) {
		return contador.add(arg0);
	}
	public synchronized boolean removeAllContador(Collection arg0) {
		return contador.removeAll(arg0);
	}
	public synchronized boolean addDescarga(FileID e) {
		return listaDescarga.add(e);
	}
	public synchronized boolean addAvisar(FileID e) {
		return listaDescarga.add(e);
	}
	public synchronized void reset() {
		listaAvisar = new ArrayList<FileID>();
		permiso = false;
	}
}
